<?php
namespace workflow;

use EasyWeChat\Factory;
use think\Env;


class work {

    protected $WorkApp;//企业微信

    protected $wechatApp;//微信

    protected $token;

    public $parameter;

    protected $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=';

    public function __construct()
    {
        $this->WorkApp = Factory::work($this->config());
        $this->WorkAppPlan = Factory::work($this->configPlan());
    }

    public function setToken()
    {
        $token = $this->WorkApp->access_token->getToken();
        $this->token = $token['access_token'];
    }  
    public function setTokenPlan()
    {
        $token = $this->WorkAppPlan->access_token->getToken();
        $this->tokenPlan = $token['access_token'];
    }

    public function send($msyType,array $params)
    {
        $this->$msyType($params);
        $this->setToken();
        $response = \fast\Http::post($this->url.$this->token,json_encode($this->parameter,true));
        return json_decode($response,true);
    }
     public function send_plan($msyType,array $params)
    {
        $this->$msyType($params);
        $this->setTokenPlan();

        $response = \fast\Http::post($this->url.$this->tokenPlan,json_encode($this->parameter,true));

        return json_decode($response,true);
    }
    /**
     * 任务卡片消息
     */
    public function taskcard(array $array = [])
    {
        $this->parameter =  [
            'touser'=>$array['touser'],//成员ID列表（消息接收者，多个接收者用‘|’分隔，最多支持1000个）
            'toparty'=>$array['toparty'],//部门ID列表，多个接收者用‘|’分隔，最多支持100个。
            'totag'=>$array['totag'],//标签ID列表，多个接收者用‘|’分隔，最多支持100个。
            'msgtype'=>'taskcard',
            'agentid'=>Env::get('Assistant.agent_id'),
            'taskcard'=>[
                'description'=>$array['description'],
                'title'=>$array['title'],
                'url'=>$array['url'],
                'task_id'=>$array['task_id'],
                'btn'=>[
                    [
                        'key'=>'1',
                        'name'=>'通过',
                        'replace_name'=>'已通过',
                        'color'=>'red',
                        'is_bold'=>true,
                    ],
                    [
                        'key'=>'2',
                        'name'=>'驳回',
                        'replace_name'=>'已驳回',
                    ]
                ]
            ]
        ];
    }
 /**
     *  设置文本卡片消息
     * @param array $array
     * @return array
     */
    public function textcard_plan( array $array)
    {
        $this->parameter =  [
            'touser'=>$array['touser'],//成员ID列表（消息接收者，多个接收者用‘|’分隔，最多支持1000个）
            'toparty'=>$array['toparty'],//部门ID列表，多个接收者用‘|’分隔，最多支持100个。
            'totag'=>$array['totag'],//标签ID列表，多个接收者用‘|’分隔，最多支持100个。
            'msgtype'=>'textcard',
            'agentid'=>Env::get('Plan.agent_id'),
            'textcard'=>[
                'title'=>$array['title'],
                'description'=>$array['description'],
                'url'=>$array['urlInfo'],
                'btntxt'=>'点击查看'
            ],
            'safe'=>1,//是否加密
        ];

    }
    /**
     *  设置文本卡片消息
     * @param array $array
     * @return array
     */
    public function textcard( array $array)
    {
        $this->parameter =  [
            'touser'=>$array['touser'],//成员ID列表（消息接收者，多个接收者用‘|’分隔，最多支持1000个）
            'toparty'=>$array['toparty'],//部门ID列表，多个接收者用‘|’分隔，最多支持100个。
            'totag'=>$array['totag'],//标签ID列表，多个接收者用‘|’分隔，最多支持100个。
            'msgtype'=>'textcard',
            'agentid'=>Env::get('Assistant.agent_id'),
            'textcard'=>[
                'title'=>$array['title'],
                'description'=>$array['description'],
                'url'=>$array['urlInfo'],
                'btntxt'=>'点击查看'
            ],
            'safe'=>1,//是否加密
        ];

    }

    public function text( array $array)
    {
        $this->parameter =  [
            'touser'=>$array['touser'],//成员ID列表（消息接收者，多个接收者用‘|’分隔，最多支持1000个）
            'toparty'=>$array['toparty'],//部门ID列表，多个接收者用‘|’分隔，最多支持100个。
            'totag'=>$array['totag'],//标签ID列表，多个接收者用‘|’分隔，最多支持100个。
            'msgtype'=>'text',
            'agentid'=>Env::get('Assistant.agent_id'),
            'text'=>[
                'content'=>$array['content'],
            ],
            'safe'=>1,//是否加密
        ];
    }

    public function update_taskcard( array $array)
    {
        $url = "https://qyapi.weixin.qq.com/cgi-bin/message/update_taskcard?access_token=";
        $this->setToken();
        $response = \fast\Http::post($url.$this->token,json_encode($array,true));
        return json_decode($response,true);
    }
    
    public function config()
    {

        return [
            'agent_id' => Env::get('Assistant.agent_id'),
            'corp_id' => Env::get('user.corp_id'),
            'secret'   => Env::get('Assistant.secret'),
            'response_type' => Env::get('Assistant.response_type'),
            'log' => [
                'level' => Env::get('Assistant.level'),
                'file' => __DIR__.Env::get('Assistant.file'),
            ],
            'oauth'=> [
                'scopes'=> Env::get('Assistant.scopes'),
                'callback' => 'http://oa.fc62.com/api/data/Agent'
            ]
        ];
    }
     public function configPlan()
    {

        return [
            'agent_id' => Env::get('Plan.agent_id'),
            'corp_id' => Env::get('user.corp_id'),
            'secret'   => Env::get('Plan.secret'),
            'response_type' => Env::get('Plan.response_type'),
            'log' => [
                'level' => Env::get('Plan.level'),
                'file' => __DIR__.Env::get('Plan.file'),
            ],
            'oauth'=> [
                'scopes'=> Env::get('Plan.scopes'),
                'callback' => 'http://oa.fc62.com/api/data/Plan'
            ]
        ];
    }

}
